Ext.onReady(function() {
	if (username == null)
		return;
	Ext.QuickTips.init();

	function pageLoad() {

		Ext.define('RuleImplementModel', {
			extend : 'Ext.data.Model',
			fields : [{
				name : 'ruleImpId'
			}, {
				name : 'rulId'
			}, {
				name : 'rulName'
			}, {
				name : 'className'
			}, {
				name : 'parseEngineType',
				convert : function(value, record) {
					if (value == 0)
						return "Java";
					if (value == 1)
						return "Class";
					if (value == 2)
						return "Config";
				}
			}]
		});

		var ruleStore = Ext.create('Ext.data.Store', {
			autoload : true,
			pageSize : pSize,
			model : 'RuleModel',
			remoteSort : true,
			proxy : {
				type : 'ajax',
				url : 'ruleimplement_getRules.action',
				method : 'POST',
				reader : {
					idProperty : 'rulId',
					root : 'result.list',
					totalProperty : 'total'
				},
				simpleSortMode : true
			}
		});
		var RuleImplementStore = Ext.create('Ext.data.Store', {
			autoload : {
				start : 0,
				limit : pSize
			},
			pageSize : pSize,
			model : 'RuleImplementModel',
			remoteSort : true,
			proxy : {
				type : 'ajax',
				url : 'ruleimplement_ruleImplementList.action',
				method : 'POST',
				reader : {
					idProperty : 'ruleImpId',
					root : 'result.list',
					totalProperty : 'result.total'
				},
				simpleSortMode : true
			}
		});

		var RuleImplementGrid = Ext.create('Ext.grid.Panel', {
			itemId : 'RuleImplementGrid',
			store : RuleImplementStore,

			columnLines : true,
			autoHeight : true,
			autoWidth : true,
			title : '规则实现列表',
			frame : true,
			loadMask : true,
			viewConfig : {
				stripeRows : true
			},
			columns : [{
				text : "规则实现ID",
				flex:1,
				dataIndex : 'ruleImpId',
				hidden : true
			}, {
				text : "规则",
				flex:1,
				dataIndex : 'rulName',
				sortable : true
			}, {
				text : "引擎类型",
				flex:1,
				dataIndex : 'parseEngineType'
			},
			// , sortable:true,renderer: function (value, meta, record) {return
			// record.raw.application.appName;}},
			{
				text : "操作",
				menuDisabled : true,
				sortable : false,
				xtype : 'actioncolumn',
				items : [{
					iconCls : 'icon-delete', // Use a URL in the icon config
					tooltip : '删除规则实现',
					text : '删除',
					handler : function(grid, rowIndex, colIndex) {

						Ext.MessageBox.confirm('提示', '您确定要删除所选吗?', function(btnId) {
							if (btnId == 'yes') {

								var rec = grid.store.getAt(rowIndex);
								var msgTip = Ext.MessageBox.show({
									title : '提示',
									width : 250,
									msg : '正在删除请稍候...'
								});
								Ext.Ajax.request({
									url : 'ruleimplement_delRuleImplement.action',
									params : {
										ruleImpId : rec.get('ruleImpId')
									},
									method : 'POST',
									success : function(response) {
										msgTip.hide();
										var result = Ext.JSON.decode(response.responseText);
										if (result.success) {
											grid.store.remove(rec);
											Ext.Msg.alert('提示', '规则实现删除成功!');
										} else {
											Ext.Msg.alert('提示', '规则实现删除失败!');
										}
									},
									failure : function(response) {

										Ext.Msg.alert('提示', '规则实现删除失败!');

									}
								});
							}
						});
					}
				}, {
					iconCls : 'icon-editfind', // Use a URL in the icon config
					tooltip : '查看规则实现',
					attr : 'style="margin-left:100"',
					handler : function(grid, rowIndex, colIndex) {
						var rec = grid.store.getAt(rowIndex);
						showWindow(rec);
					}
				}, {
					iconCls : 'icon-downArrow', // Use a URL in the icon config
					tooltip : '下载规则实现',
					attr : 'style="margin-left:100"',
					handler : function(grid, rowIndex, colIndex) {
						var rec = grid.store.getAt(rowIndex);
						showWindow(rec);
					}
				}]
			}], // end columns
			features : [{
				ftype : 'filters',
				encode : true,
				local : false,
				filters : [{
					type : 'string',
					dataIndex : 'ruleImpId',
					disabled : false
				}, {
					type : 'string',
					dataIndex : 'rule',
					disabled : false
				}, {
					type : 'string',
					dataIndex : 'rusVersion',
					disabled : false
				}]
			}],
			dockedItems : [{
				dock : 'top',
				xtype : 'toolbar',
				items : [{
					itemId : 'addButton',
					text : '创建规则实现',
					tooltip : '创建规则实现',
					iconCls : 'icon-add',
					scope : this,
					handler : function() {
						var rec = null;
						showWindow(rec);
					}
				}, '-', {
					xtype : 'FileDownloader',
					itemId : 'RuleImplementDownloader',
					width : 0,
					height : 0
				}, '-', {
					text : 'Excel',
					tooltip : '导出Excel列表',
					scope : this,
					iconCls : 'icon-excel',
					handler : function() {
						// var list = getExcelParams(Ext.getCmp('UsersGrid'));
						var list = getExcelParams(Ext.getCmp('RuleImplementGrid'));
						var downloader = Ext.getCmp('RuleImplementDownloader');
						downloader.load({
							params : {
								preFilter : list[0],
								filter : list[1],
								sort : list[2],
								dir : list[3],
								headers : list[4],
								cheaders : list[5],
								title : list[6]
							},
							url : 'userstoExcel.action'
						});
					}
				}, '-', '显示记录数', {
					itemId : 'RuleImplementCmbNum',
					name : 'RuleImplementCmbNum',
					xtype : 'combo',
					width : 50,
					allowBlank : false,
					blankText : '必须选择页面大小!',
					store : pageStore,
					value : pSize,
					editable : false,
					loadingText : '正在加载...',
					displayField : 'name',
					valueField : 'abbr',
					emptyText : '请选择页面大小',
					queryMode : 'local',
					listeners : {
						select : function(combo, record, index) {
							pSize = this.getValue();
							RuleImplementStore.pageSize = pSize;
							RuleImplementStore.load();
						}
					}
				}]
			}, Ext.create('Ext.PagingToolbar', {
				pageSize : pSize,
				dock : 'bottom',
				store : RuleImplementStore,
				displayInfo : true,
				displayMsg : '显示 {0} - {1} 条，共计 {2} 条',
				emptyMsg : '没有数据',
				plugins : Ext.create('Ext.ux.ProgressBarPager', {})
			})], // end docked items
			listeners : {
				beforerender : function(grid, opts) {
					RuleImplementStore.pageSize = pSize;
					RuleImplementStore.load();
				}
			}

		});
		// end ReportGrid

		// 查看规则实现窗口
		function showWindow(rec) {
			console.log("showWindow-RuleImplement");
			console.log(rec);
			var ruleImplementForm = Ext.create('Ext.form.Panel', {
				frame : true,
				bodyStyle : 'padding:5px 5px 0',
				autoWidth : true,
				fieldDefaults : {
					msgTarget : 'side',
					labelWidth : 75
				},
				defaultType : 'textfield',
				defaults : {
					anchor : '100%'
				},
				items : [{
					xtype : 'textfield',
					itemId : 'id',
					name : 'id',
					columnWidth : 0.5,
					hidden : true
				}, {
					xtype : 'combo',
					itemId : 'rulId',
					name : 'rulId',
					hiddenName : 'name',
					columnWidth : 0.5,
					fieldLabel : '规则<span style="color:red;">*</span>',
					allowBlank : false,
					multiSelect : false,
					valueField : 'rulId',
					displayField : 'rulName',
					store : ruleStore,
					mode : 'RuleModel', // default: remote
					emptyText : '请选择规则',
					readOnly : false,
					editable : false,

				}, {
					xtype : 'combo',
					itemId : 'parseEngineType',
					name : 'parseEngineType',
					hiddenName : 'name',
					columnWidth : 0.5,
					fieldLabel : '引擎类型<span style="color:red;">*</span>',
					allowBlank : false,
					multiSelect : false,
					valueField : 'value',
					displayField : 'name',
					store : new Ext.data.SimpleStore({
						fields : ['name', 'value'],
						data : [['Java', '0'], ['Class', '1'], ['Config', '2']]
					}),
					mode : 'local', // default: remote
					emptyText : '请选择引擎类型',
					readOnly : false,
					editable : false,

				}, {
					xtype : 'fileuploadfield',
					id : 'className',
					emptyText : '请选择文件（class,zip）',
					fieldLabel : '文件<span style="color:red;">*</span>',
					allowBlank : false,
					name : 'upload',
					buttonCfg : {
						text : '',
						iconCls : 'icon-upload'
					},
					// FIXME: validator doesn't work
					validator : function(value) {
						console.log(value);
						var types = ['class', 'zip'];
						var arr = value.split('.');
						if (types.indexOf(arr[arr.length - 1]) == -1) {
							return '文件类型不合法';
						} else {
							return true;
						}
					}
				}],
				buttons : [{
					text : '确定',
					handler : submitForm
				}, {
					text : '取消',
					handler : function() {
						ruleImplementForm.destroy();
						ruleImplementWindow.destroy();
					}
				}]

			});
			function submitForm() {
				values = ruleImplementForm.form.getValues();
				var JSONobj = [];
				// JSONobj.push(values);
				JSONobj.push(JSON.stringify(values));
				ruleImplementForm.form.submit({
					clientValidation : true,
					waitMsg : '正在上传请稍候...',
					waitTitle : '提示',
					url : 'ruleimplement_addRuleImplement.action',
					method : 'post',
					params : {
						datas : JSONobj
					},
					success : function(form, action) {

						Ext.Msg.alert('提示', '文件已经上传成功!');
						RuleImplementStore.load();
					},
					failure : function(form, action) {

						Ext.MessageBox.show({
							title : '错误',
							msg : '保存失败!请检查上传文件和数据是否完整！',
							buttons : Ext.MessageBox.OK,
							icon : Ext.MessageBox.ERROR
						});

					}
				});
			}

			var ruleImplementWindow = new Ext.Window({// 创建弹出窗口
				layout : 'fit',
				width : 380,
				closeAction : 'destroy',
				height : 280,
				resizable : false,
				shadow : true,
				modal : true,
				closable : true,
				bodyStyle : 'padding:5 5 5 5',
				animCollapse : true,
				items : [ruleImplementForm]
			});
			if (rec != null) {
				ruleImplementForm.loadRecord(rec);
				reportForm.down('#rulName').setValue(rec.raw.rule.rulName);
				// ruleImplementForm.down('#username').readonly = true;
				// ruleImplementForm.down('#rolecode').setValue(rec.data.webRole.rolecode);
			}
			ruleImplementWindow.doLayout();
			ruleImplementWindow.show();
		}

		var tab = Ext.getCmp('mainContent').getActiveTab();
		tab.items.add(RuleImplementGrid);
		tab.doLayout();
	}

	pageLoad();

}); 